package net.sk.china.city.talk.service.wechat;

import com.alibaba.fastjson.JSONObject;
import net.sk.china.city.talk.response.wechat.*;
import net.sk.china.common.vo.WxRefundVo;

import java.util.List;

/**
 * WechatNewService 接口
 * +----------------------------------------------------------------------
 * // | Talk To [ 聊来改善地区金融服务环境，助力企业发展 ]
 * // +----------------------------------------------------------------------
 * // | Copyright (c) 2018-2024 聊来 All rights reserved.
 * // +----------------------------------------------------------------------
 * // | Licensed ( <a href="http://www.apache.org/licenses/LICENSE-2.0">apache</a> )
 * // +----------------------------------------------------------------------
 * // | @Author: 聊来 <18970881148@qq.com>
 * // +----------------------------------------------------------------------
 * // | DateTime: 2024/2/21 8:55
 * // +----------------------------------------------------------------------
 */
public interface WechatNewService {

    /**
     * 获取公众号模板消息列表
     * @return {@code List<PublicTemplateResponse>}
     */
    List<PublicTemplateResponse> getPublicTemplateList();

    /**
     * 删除微信公众号模板消息
     * @param templateId 模版ID
     * @return {@code boolean}
     */
    boolean delPublicTemplate(String templateId);


    /**
     * 添加公众号模板消息
     * @param templateIdShort 模板库中模板编号
     * @return {@code String}
     */
    String addPublicTemplate(String templateIdShort);

    /**
     * 获取当前帐号下的模板列表(订阅消息)
     * @return {@code List<RoutineTemplateResponse>}
     */
    List<RoutineTemplateResponse> getRoutineTemplateList();


    /**
     * 删除微信小程序订阅消息
     * @param priTmplId 模版ID
     * @return {@code boolean}
     */
    boolean delRoutineTemplate(String priTmplId);


    /**
     * 订阅小程序消息模板
     * @param tempKey 模板编号
     * @return {@code List<RoutineTemplateKeyResponse>}
     */
    List<RoutineTemplateKeyResponse> getRoutineTemplateByWechat(String tempKey);

    /**
     * 添加小程序订阅消息
     * @param tempKey 模板编号
     * @param kidList 小程序订阅消息模板kid数组
     * @return {@code String}
     */
    String addRoutineTemplate(String tempKey, List<Integer> kidList);

    /**
     * 微信小程序发送订阅消息
     * @param templateMessage 消息对象
     * @return {@code boolean}
     */
    boolean sendMiniSubscribeMessage(TemplateMessageResponse templateMessage);

    /**
     * 微信公众号发送模板消息
     * @param templateMessage 模板消息对象
     * @return {@code boolean}
     */
    boolean sendPublicTemplateMessage(TemplateMessageResponse templateMessage);

    /**
     * 获取微信公众号自定义菜单配置
     * @return {@code JSONObject}
     */
    JSONObject getPublicCustomMenu();

    /**
     * 创建微信自定义菜单
     * @param data 菜单json字符串
     * @return {@code boolean}
     */
    boolean createPublicCustomMenu(String data);


    /**
     * 删除微信自定义菜单
     * @return {@code boolean}
     */
    boolean deletePublicCustomMenu();

    /**
     * 微信申请退款
     * @param wxRefundVo 微信申请退款对象
     * @param path 商户p12证书绝对路径
     * @return {@code WxRefundResponse}
     */
    WxRefundResponse payRefund(WxRefundVo wxRefundVo, String path);

    /**
     * 获取微信公众号js配置参数
     * @param url 地址
     * @return {@code WeChatJsSdkConfigResponse}
     */
    WeChatJsSdkConfigResponse getJsSdkConfig(String url);

    /**
     * 企业号上传其他类型永久素材
     * 获取url
     * @param type 素材类型:图片（image）、语音（voice）、视频（video），普通文件(file)
     * @return {@code String}
     */
    String qyapiAddMaterialUrl(String type);
}
